#include"豆瓣电影数据的知识图谱构建.h"


void printMenuHead()
{
    cout << "******************************************************" << endl;
    cout << "******************************************************" << endl;
    cout << "********    请从以下选择你想要实现的功能：    ********" << endl;
    cout << "*******    A：输入演员/导演,并输出他们的作品    ******" << endl;
    cout << "*******    B：输入两个结点查找他们之间的关系    ******" << endl;
    cout << "*******    C：输入结点和关系进行智能问答        ******" << endl;
    cout << "*******    D: 输入电影并基于该电影进行推荐      ******" << endl;
    cout << "*******    E: 输入其他任意字母可以退出程序      ******" << endl;
    cout << "******************************************************" << endl;
    cout << "******************************************************" << endl;
}

void menuFunction()
{
    printMenuHead();//打印表头
    int control = 1;
    while (1)
    {
        if (control == 0)
        {
            system("cls");
            printMenuHead();//打印表头
        }
        control = 0;

        string search_information1;
        string search_information2;
        cout << "请输入你的选项： " << endl;
        char option;
        cin >> option;
        switch (option)
        {
        case 'A':
        case 'a':
            cout << "请输入演员或者导演的名字来查询出演的电影或者导演的电影:" << endl;
            cin >> search_information1;
            EasySearchBaseOnPerson(search_information1);
            
            cout << endl;
            system("pause");
            break;
        case 'B':
        case 'b':
            //实现两个结点关系的查找
            cout << "请输入您要查询关系的两个结点:" << endl;
            cin >> search_information1 //结点1
                >> search_information2; //结点2

            //首先要保证结点存在才能进行查找
            if (nodeIndexTable.count(search_information1)
                && nodeIndexTable.count(search_information2))
            {
                SearchRaletionship(search_information1, search_information2);
            }
            else
            {
                cout << "所要查找的结点不存在~" << endl;
            }

            cout << endl;
            system("pause");
            break;
        case 'C':
        case 'c':
            //实现智能问答
            cout << "请输入你想要查询的对象（电影、演员、导演或类型）和关系:" << endl;
            cout << "一共有以下4种关系：" << endl;
            cout << "结点1\t结点2\t关系代称" << endl;
            cout << "电影\t导演\t导演" << endl;
            cout << "电影\t演员\t出演" << endl;
            cout << "导演\t演员\t合作" << endl;
            cout << "电影\t类型\t类型" << endl;
            cout << endl;
            cout << "请输入所要查找的基础对象及关系：" << endl;
            cout << endl;
            cin >> search_information1 //代表查找的基础对象
                >> search_information2; //代表所要查找的关系
            intelligentQandA(search_information1, search_information2);

            cout << endl;
            system("pause");
            break;
        case 'D':
        case 'd':
            //实现基于某一部电影实现10部电影推荐
            cout << "请输入你想要作为推荐参考的一部电影:  " << endl;
            cin >> search_information1;
            if (nodeIndexTable.count(search_information1)  //要求输入的结点是存在的
                && movieG.vNodeList[nodeIndexTable[search_information1]].type == "电影结点") //并且要求输入的结点为电影结点
            {
                movieRecommend(search_information1);
            }
            else
            {
                cout << "您输入的电影不存在~" << endl;
            }
            
            cout << endl;
            system("pause");
            break;
        default:
            //退出程序
            cout << "程序已退出，感谢使用~";
            cout << endl;
            return;
        }
    }
}

